中文数据可视化你需要知道的一个库
最近在知乎上看到要想用python做数据分析,最好有实用场景,而最适合长期学习的领域之一就是python量化金融。
因为会有无穷尽的知识等着你去学,有一个说法很生动。在别的领域的理论,只需要3%的理论可能就能解释90%的现象,但是在金融领域,90%的理论只能解释3%的现象。
看样子金融可以研究一辈子,但是长周期意味着反馈时间一般都很漫长,学了半天我们不知道自己是否学到,学的好不好,因此一般人很难坚持下来。不过python与金融一起学习,会让反馈时间极大地缩短,让你就像打游戏一样一边学习一遍实践。
今天就先放一段大邓在画股价折线图遇到的中文显示问题及解决办法
获取股价数据
我使用的tushare金融数据库获取股价数据
import tushare as ts
xingye_bank = ts.get_h_data('601166', start='2018-01-01', end='2018-03-25') #两个日期之间的前复权数据
jingdongfang = ts.get_h_data('000725', start='2018-01-01', end='2018-03-25') #两个日期之间的前复权数据
#显示兴业银行前5条数据
xingye_bank.head()
将数据当天收盘价close加入到dataframe中
import pandas as pd
data = {'兴业银行': xingye_bank.close,
'京东方':jingdongfang.close}
df = pd.DataFrame(data)
#时间date是降序,需要更改为升序,并且是原地修改
df.sort_values(by='date',ascending=True,inplace=True)
df.head()
pandas是支持matplotlib的,我直接使用df.plot(kind='line')画折线图
import matplotlib.pyplot as plt
%matplotlib inline
df.plot(kind='line')
看上图中的图例并没有显示中文,而是乱码。因为python的matplotlib默认不支持中文,所以连带着像pandas、seaborn等也不支持中文的。百度查到的在解决方案大多是
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
在mac电脑中上面的代码声明是无效的,而且最关键的是代码不好记住。大邓比较懒,一般都是图中的图例尽量用英文书写,省去这些麻烦事。不过总有需要中文的时候,这次我写股价走势时,就很想显示中文。经过一番百度谷歌的探索,发现一个库pyplotz。
在使用基于matplotlib的库画图时,结合Pyplotz,无需繁琐的配置环境就可以显示中文,真是居家旅游数据分析必备库^_^。
安装pyplotz
!pip3 install pyplotz
下面我们重新绘图,大家如果熟悉matplotlib就会很容易的看懂
from pyplotz.pyplotz import PyplotZ
from pyplotz.pyplotz import plt
%matplotlib inline
pltz = PyplotZ()
pltz.enable_chinese() #支持中文
pltz.set_figure_size(10, 5) #设置画布尺寸
#x,y, 线条颜色, label图例名字, alpha透明度(范围从0到1)
pltz.plot(df.index, df['兴业银行'], 'g', label='兴业银行', alpha=0.7)
pltz.plot(df.index, df['京东方'], 'y', label='京东方', alpha=0.7)
#坐标的名字
pltz.xlabel('日期')
pltz.ylabel('股价')
#显示图例,loc设置图例的位置为右上角
pltz.legend(loc='upper right')
#自动设置字体大小
pltz.automate_font_size()
wow,中文显示这个大bug真的解决了。大家可以收藏起来,以后绘图的时候可以回来看看自己的收藏。
精选文章
大神kennethreitz写出requests-html,号称为人设计的网页解析库
【工具篇】如何用Google Colab高效的学习Python
我就希望你给我一个好看